#include "qcsvfile.h"

void QCSVFile::set_text(int x, int y, const QString &value)
{
    if(y<0)
    {
        y=m_data.size();
    }
    if(y>=m_data.size())
    {
        for(int i=m_data.size();i<=y;i++)
        {
            m_data.append(QStringList());
        }
    }

    QStringList list=m_data.at(y);

    if(x<0)
    {
        x=list.size();
    }
    if(x>=list.size())
    {
        for(int i=list.size();i<=x;i++)
        {
            list.append("");
        }
    }

    list.replace(x,value);
    m_data.replace(y,list);
}

QString QCSVFile::get_text(int x, int y)
{
    if(y<0 || y>=m_data.size())
    {
        return "";
    }
    QStringList l=m_data.at(y);
    if(x<0 || x>=l.size())
    {
        return "";
    }
    return l.at(x);
}

void QCSVFile::load(const QString &text)
{
    m_data.clear();
    QStringList list=text.split("\r\n");

    foreach(QString str,list)
    {
        m_data.append(str.split(","));
    }
}

QString QCSVFile::save()
{
    QString ret;

    foreach(QStringList l,m_data)
    {
        foreach(QString s,l)
        {
            ret+=s;
            ret+=",";
        }
        if(l.size()>0)
        {
            ret=ret.left(ret.size()-1);
        }
        ret+="\r\n";
    }

    if(m_data.size()>0)
    {
        ret=ret.left(ret.size()-2);
    }

    return ret;
}

int QCSVFile::size()
{
    return m_data.size();
}

int QCSVFile::size(int y)
{
    if(y<0 || y>=m_data.size())
    {
        return 0;
    }
    else
    {
        return m_data.at(y).size();
    }
}
